dofile "lib/radical.lua"

function tile(s) 
  return const.path.gfx.."game/ware/"..s..".jpg"; 
end

function cm_tile(s) 
  return const.path.gfx.."game/common/"..s..".jpg"; 
end

function dxml(s)
  return const.path.dlg.."3-inter/bel/"..s..".xml";
end

bel = engine.state {
   _door        = false --Kate tried to open door
  ,_door2       = false --Kate was told that she shouldn't open the door
  ,_workertalk  = false --Kate talked with worker
  ,_gate        = false --Kate talked with worker about broken gate
  ,_truck       = false --Truck is near warehouse
  ,_pole        = false --Kate took pole
  ,_opened      = false --Kate opened ware door with pole
  ,_pair        = false --A pair of people stopped talking in warehouse
  ,_unlock      = false --Kate unlocked a truck
  ,_gps         = false --Kate took GPS
  ,_address     = false --Kate knows the address
}

bel_player = musplayer.player {  
   mus("rainmusic"):inside("start1")
  ,mus("rain"):inside("street1"):loop()
  ,sfx("note"):inside("num2")
  ,mute():inside("office"):always()
  ,mus("rain"):inside("nearoffice"):loop()
  ,sfx("softnote"):inside("houses1")
  ,sfx("autofocus"):inside("lie"):always()
  ,sfx("carstart"):inside("driveout"):always()
  ,mus("meeting"):inside("inside"):loop()
  ,sfx("autofocus"):inside("stophere"):always()
  ,sfx("autofocus"):inside("drop_bad2"):always()
  ,sfx("gate2"):inside("gateopen")
  ,mus("meeting"):inside("inside7"):loop()
  ,sfx("beep"):inside("gps_start"):always()
  ,sfx("error"):inside("gps_new2"):always()
  ,sfx("error"):inside("gps_search2"):always()
  ,mus("rain"):inside("final1"):loop()
  ,mute():inside("final5")
  ,sfx("cardoor"):inside("final5")
  ,sfx("carstart"):inside("cabman_dlg2")
  ,sfx("brakes"):inside("final6")
  ,sfx("bam2"):inside("final7")
}

main = engine.main {
   start        = chain_ {
                     episode_("3-bel")
                    ,musplayer_("bel_player")
                    ,walk_("start1")
                  }
  ,finish       = gamefile_("3-inter/ssk.lua")
}


------------------------------------------------------------------------------------------
-- Intro Area
------------------------------------------------------------------------------------------

start1 = pause {
   time         = 3000
  ,next         = "start2"
}

start2 = pause {
   tile         = { cm_tile "clouds3", 0, 20 }
  ,time         = 5500
  ,next         = "start3"
}

start3 = slideup {
   fps          = 20
  ,step         = 1
  ,fading       = 0
  ,x            = 0
  ,y            = 0
  ,endy         = -180
  ,tile         = cm_tile "clouds3"
  ,next         = "start4"
}

start4 = slideup {
   fps          = 20
  ,step         = 1
  ,x            = 0
  ,y            = 580
  ,tile         = tile "houses"
  ,next         = "start5"
}

start5 = pause {
   time         = 3000
  ,tile         = tile "houses"
  ,next         = "start6"
}

start6 = pause {
   time         = 3000
  ,next         = "street1"
}

street0 = scene {
   tile         = { cm_tile "clouds4", 0, 20 }
  ,bounds       = { 176, 333, 700 }
  ,dsc          = "Катя уже проходила здесь раньше. Вряд ли стоит дальше идти в этом направлении. Так она до конца дня не найдет нужный дом."
  ,alwaysdsc    = true
  ,nav          = {
                    down = vw("Вернуться", "street1")
                  }
}

street1 = scene {
   tile         = tile "street_wall1"
  ,bounds       = { 220, nil, 620 }
  ,dsc          = [[Дождь так и не завершился. Катя надела старый прохудившийся дождевик отца, но все равно вся промолка. Она долго блуждала в пасмурной
                    темноте, пытаясь найти нужный дом на Соловьева -- казалось, что нумерация всех зданий здесь перепутана, двенадцатый дом был сразу после
                    двадцать второго, а тридцатый первый -- в проулке двадцать шестого.^
                    От дождевика пахло отцовскими сигаретами, смолистыми и горькими, которые Катя раньше так ненавидела.^^]]
  ,obj          = { "street1_sign" }
  ,nav          = {
                     up = vw("В конец улицы", "street2")
                    ,down = vw("В начало улицы", "street0")
                    ,left = vw("В проулок", "sub1")
                  }
}

sub1 = scene {
   tile         = { tile "street1", 638, 441 }
  ,dsc          = "Катя смотрит на номер ближайшего к ней дома -- пятнадцать. Она явно забрела не туда."
  ,alwaysdsc    = true
  ,nav          = {
                    down = vw("Вернуться", "street1")
                  }
}

street1_sign = staticitem {
  dsc           = choose_ {
                     ["default"] = "Катя присматривается к металлической {вывеске} на стене дома, которая бликует в свете окон."
                    ,["street1_sign._seen and not street2._seen and not sub1._seen"] =
                        [[Дом двадцать четыре. Катя нерешительно остановилась перед вывеской с названием улицы. Водостока у этого дома нет, 
                          и по кирпичной стене стекает грязная вода, из-за чего кажется, что силикат медленно растворяется в дожде. Катя 
                          даже не уверена, что идет в правильном направлении.]]
                    ,["street2._seen or sub1._seen"] = "Дом двадцать четыре. Здесь Катя уже проходила раньше."
                  }
}

street2 = scene {
   tile         = tile "street_wall2"
  ,bounds       = { 130, nil, 700 }
  ,obj          = { "street2_sign" }
  ,nav          = {
                     up = vw("В конец улицы", "street3")
                    ,down = vw("В начало улицы", "street1")
                    ,left = vw("В проулок", "sub2a")
                  }
}

street2_sign = staticitem {
   dsc          = "Все дома на этой улице кажутся одинаковыми. Если бы не {таблички} с номерами, Катя и вовсе бы здесь заблудилась."
  ,act          = "Дом четырнадцать. Кате начинает казаться, что во всей этой нумерации домов все же есть какая-то логика."
  ,showonce     = true
}

sub2a = scene {
   tile         = { tile "street1", 638, 441 }
  ,obj          = { "sub2a_sign" }
  ,nav          = {
                     up = vw("Дальше в проулок", "sub2b")
                    ,down = vw("На главную улицу", "street2")
                  }
}

sub2a_sign = staticitem {
   dsc          = "У входа в черный бессветный подъезд висит покореженная {табличка} с номером дома."
  ,act          = "Дом тридцать два."
  ,showonce     = true
}

sub2b = scene {
   tile         = tile "street_wall2"
  ,bounds       = { 130, nil, 700 }
  ,dsc          = "Впереди проулок заканчивается -- там проходит уже соседняя улица. Катя даже может разглядеть треугольные крыши зданий, похожих на складские постройки, которые почти теряются в пасмурных сумерках.^^"
  ,obj          = { "sub2b_sign" }
  ,alwaysdsc    = true
  ,nav          = {
                     up = vw("Дальше в проулок", "sub2c")
                    ,down = vw("К главной улице", "sub2a")
                  }
}

sub2b_sign = staticitem {
   dsc          = "Катя {осматривается} вокруг в поисках какой-нибудь таблички или вывески с номером дома."
  ,act          = "Нет, здесь ничего нет."
  ,cnd          = not_("sub2b._seen")
}

sub2c = scene {
   tile         = tile "street_wall1"
  ,bounds       = { 220, nil, 620 }
  ,obj          = { "sub2c_sign" }
  ,nav          = {
                    down = vw("Идти назад", "sub2b")
                  }
}

sub2c_sign = staticitem {
   dsc          = [[Здесь стоит последний дом в этом проулке. С виду это обычное жилое здание, совсем не похожее на офис компании. Катя почти уверена,
                    что ей придется возвращаться назад. Она едва замечает номер {дома} у входа.]]
  ,act          = walk_("num1")
}

street3 = scene {
   tile         = { cm_tile "clouds4", 0, 20 }
  ,bounds       = { 176, 333, 700 }
  ,obj          = { "street3_sign", "street3_stations" }
  ,nav          = {
                     down = vw("В начало улицы", "street2")
                    ,left = vw("В проулок", "sub3a")
                  }
}

street3_sign = staticitem {
   dsc          = "Здесь улица заканчивается. Вывеска на стене дома наполовину отломана, так что можно прочитать лишь последний {номер}."
  ,act          = "Четыре. Катя даже не уверена, что ей это как-то поможет."
  ,showonce     = true
}

street3_stations = staticitem {
   dsc          = "Вдалеке, едва различимые на фоне ненастного неба, виднеются широкие трубы тепловых {электростанций} -- их больше десятка, и они точно окружают весь город."
  ,act          = [[Все эти ТЭЦ построили уже после аварии, когда город начали переводить, как тогда выражались, на безопасную энергию. После этого весь северо-запад превратился
                    в город тепловых электростанций. Катя какое-то время смотрит на странный почти сюрреалистичный пейзаж вдалеке. Ядовито-желтый дым из широких разверстых труб 
                    смешивается с облаками, и кажется, что он отравляет все небо. Отец однажды объяснял Кате, почему дым становится желтым, но она никак не может вспомнить.]]
  ,showonce     = true
}

sub3a = scene {
   tile         = cm_tile "debris1"
  ,bounds       = { 100, nil, 760 }
  ,obj          = { "sub3a_debris" }
  ,nav          = {
                     up = vw("Дальше в проулок", "sub3b")
                    ,down = vw("На главную улицу", "street3")
                  }
}

sub3a_debris = staticitem {
   dsc          = "Катя проходит мимо какого-то заброшенного {дома}. Здесь нет никаких вывесок -- Катя даже не понимает, куда она идет."
  ,act          = "Кажется, это еще один дом-призрак, как любил называть их отец. Жильцов выселили, а дом так и снесли. У них в районе есть такой же."
  ,showonce     = true
}

sub3b = scene {
   tile         = cm_tile "debris2"
  ,bounds       = { 100, nil, 760 }
  ,dsc          = "Здесь еще один заброшенный дом -- и снова никаких вывесок. Видимо, у домов-призраков попросту нет номеров.^Катя чувствует, что лучше ей вернуться назад."
  ,alwaysdsc    = true
  ,nav          = {
                    down = vw("К главной улице", "sub3a")
                  }
}

num1 = pause {
   time         = 1000
  ,next         = "num2"
}

num2 = slidedown {
   fps          = 20
  ,step         = 1
  ,x            = 408
  ,y            = 260
  ,starty       = 200
  ,tile         = tile "33"
  ,next         = "num3"
}

num3 = pause {
   time         = 2000
  ,enter        = set_checkpoint
  ,next         = "office"
}

------------------------------------------------------------------------------------------
-- Warehouse Area
------------------------------------------------------------------------------------------

office = scene {
   tile         = tile "office"
  ,bounds       = { 130, nil, 720 }
  ,dsc          = [[Это похоже на приемную, однако посетителей здесь нет. Все стены, когда-то выкрашенные светлой краской, заляпаны 
                    грязью, точно кто-то вытирал о них ноги.]]
  ,alwaysdsc    = true
  ,obj          = { "office_board", "office_door", "receptionist" }
  ,nav          = {
                    down = vw("Выйти", "nearoffice")
                  }
}

office_board = staticitem {
   dsc          = "У входа стоит металлический стол с пачкой каких-то бланков, а над столом висит {доска} для объявлений."
  ,act          = "Из доски лишь торчит пара кнопок."
  ,showonce     = true
}

office_door = staticitem {
   dsc          = choose_ {
                     ["default"] = "В глубине помещения виднеется какая-то {дверь}."
                    ,["bel._door"] = "На двери не видно никаких табличек и надписей. Быть может, там, {за дверью}, есть еще одна зона для клиентов?"
                  }
  ,cnd          = not_("bel._door2")
  ,act          = choose_ {
                     ["default"] = chain_ { set_("bel._door"), "Катя осматривает дверь. На двери нет таблички и, кажется, что она даже слегка приоткрыта." }
                    ,["bel._door"] = walk_("receptionist_dlg2")
                  }
}

receptionist = staticitem {
   dsc          = "За стойкой со скучающим видом сидит полная {женщина}."
  ,act          = walk_("receptionist_dlg")
}

receptionist_dlg = dialog {
   tile         = tile "office"
  ,bounds       = { 130, nil, 720 }
  ,dsc          = "-- Если вы по поводу сдачи тридцать четвертого, то сейчас никакой информации нет. Приходите через неделю."
  ,dlg          = dxml "receptionist"
}

receptionist_dlg2 = dialog {
   tile         = tile "office"
  ,bounds       = { 130, nil, 720 }
  ,dsc          = "-- Девушка, а вы куда? Здесь вход только для сотрудников."
  ,dlg          = dxml "receptionist2"
}

nearoffice = scene {
   tile         = tile "street_wall1"
  ,bounds       = { 220, nil, 620 }
  ,dsc          = choose_ {
                     ["default"] = 
                        [[Катя думает, что лучше все-таки здесь осмотреться, прежде чем уходить. Конечно, не исключено, что она
                          набрала неправильный телефон -- или что отец ее просто записал для себя номер этой компании на будущее, --
                          однако у нее нет никаких других зацепок.]]
                    ,["ware1._seen"] = "А дождь все не кончается."
                  }
  ,nav          = {
                     left = vw("В приемную", "office")
                    ,up = vw("К складским помещениям", "ware1")
                  }
}

ware1 = scene {
   tile         = { tile "ware1", 0, 20 }
  ,bounds       = { nil, 270 }
  ,dsc          = [[Этим складским постройкам, наверное, не меньше сотни лет -- кирпичи даже все потемнели от старости, а грязные от дождя листы шифера,
                    которыми облицованы стены у крыши, кажутся какими-то кривыми заплатами. Современные металлические ворота с электрическим подъемником 
                    у ближайшего ангара смотрятся здесь чужеродно и неестественно.^^]]
  ,obj          = { "ware1_truck", "worker", "repair_group" }
  ,nav          = {
                     up = vw("В конец зоны", "ware2")
                    ,down = vw("К офису", "nearoffice")
                  }
}

ware1_truck = staticitem {
   dsc          = "Перед воротами в ангар остановился {грузовик}."
  ,act          = "Лучше не подходить близко к грузовику, а то водитель может заметить Катю."
  ,cnd          = if_("bel._truck")
  ,showonce     = true
}

worker = staticitem {
   dsc          = choose_ {
                     ["default"] = 
                        [[Рядом с воротами стоит {мужчина} средних лет в синей рабочей робе, в которой Катя так часто видела своего отца. Он 
                          пытается прикрыться от дождя свернутой газетой, которая промокла почти насквозь и расползается у него в руках.]]
                    ,["bel._truck"] = "{Рабочий}, с которым разговаривала Катя, что-то возмущенно пытается объяснить водителю."
                  }
  ,act          = choose_ {
                     ["default"] = walk_("worker_dlg")
                    ,["bel._truck"] = "Лучше не попадаться ему сейчас на глаза."
                  }
}

repair_group = staticitem {
   dsc          = choose_ {
                     ["default"] = "Он с каким-то раздражением наблюдает за другими {рабочими}, которые суетятся у подъемного механизма ворот."
                    ,["bel._truck"] = "Остальные рабочие с каким-то отвлеченным интересом наблюдают за их перепалкой."
                  }
  ,act          = "Кажется, они пытаются что-то починить. Возможно, ворота не открываются?"
}

worker_dlg = dialog {
   tile         = { tile "ware1", 0, 20 }
  ,bounds       = { nil, 270 }
  ,dlg          = dxml "worker"
  ,talkend      = "ware1"
}

ware2 = scene {
   tile         = tile "ware2"
  ,dsc          = "Катя стоит перед еще одним старым кирпичным ангаром с такими же электрическими воротами."
  ,alwaysdsc    = true
  ,obj          = { "ware2_door", "pipe" }
  ,nav          = {
                     down = vw("К приемной", "ware1")
                    ,right = vw("Спуститься вниз по улице", "downstreet")
                  }
}

ware2_door = staticitem {
   dsc          = choose_ {
                     ["default"] = "Ворота здесь не закрылись до конца, и через {щель} внизу пробивается свет из складского помещения."
                    ,["bel._opened"] = "Ворота приподняты над землей -- так, что через образовавшийся проем можно {пролезть}."
                  }
  ,act          = choose_ {
                     ["default"] = "Щель слишком узкая, пролезть не получится."
                    ,["bel._opened"] = walk_("inside")
                  }
}

pipe = staticitem {
   dsc          = choose_ {
                     ["default"] = "У стены свалены огромные металлические {трубы}. В одной из труб что-то лежит."
                    ,["bel._pole"] = "У стены свалены огромные металлические {трубы}."
                  }
  ,act          = walk_("ware3")
}

ware3 = scene {
   tile         = { tile "ware3", 0, 20 }
  ,bounds       = { nil, 290 }
  ,dsc          = choose_ {
                    ["bel._pole"] = "Здесь больше нет ничего интересного."
                  }
  ,alwaysdsc    = true
  ,obj          = { "pole" }
  ,nav          = {
                    down = vw("Отойти", "ware2")
                  }
}

pole = item {
   nam          = "Свая"
  ,img          = ico "pole-use"
  ,ico          = ico "pole"
  ,dsc          = "В трубе у стены можно заметить кусок железной {сваи}."
  ,tak          = chain_ { set_("bel._pole"), "Катя взяла кусок сваи." }
  ,use          = chooseuse_ {
                     ["default"] = "Не стоит этого делать."
                    ,["ware2_door"] = 
                        choose_ {
                           ["default"] = chain_ { sound_("not"), "Не стоит этого делать. Катю наверняка заметят рабочие." }
                          ,["bel._truck"] = chain_ { sound_("gate"), set_("bel._opened"), drop_("pole"), "Катя немного приподняла ворота вверх с помощью куска сваи." }
                        }
                  }
}

downstreet = engine.hub {
  enter         = choose_ {
                     ["default"] = walk_("houses1")
                    ,["downstreet._seen"] = walk_("ware4")
                  }
}

houses1 = slideup {
   fps          = 20
  ,step         = 2
  ,x            = 0
  ,y            = 580
  ,tile         = tile "houses"
  ,next         = "houses2"
}

houses2 = cutscene {
   tile         = tile "houses"
  ,dsc          = [[Катя и сама не понимает, куда она идет. Все дома впереди выглядят как-то удручающе одинаково, а сама улица такая узкая,
                    что здесь едва может проехать автомобиль.]]
  ,next         = "ware4"
}

ware4 = scene {
   tile         = { tile "street1", 638, 441 }
  ,dsc          = "Дождь и не думает прекращаться, а, напротив, лишь расходится с каждой минутой. Видимо, солнце сегодня так и не покажется."
  ,alwaysdsc    = true
  ,nav          = {
                     up = vw("В конец улицы", "ware5"):cnd("not bel._truck", "Не стоит идти дальше. Катя может и правда заблудиться.")
                    ,down = vw("К складским помещениям", "ware2")
                  }
}

ware5 = scene {
   tile         = { tile "truck", 0, 400 }
  ,obj          = { "trucker" }
  ,nav          = {
                     up = vw("В конец улицы"):cnd("false", "Не стоит идти дальше. Катя может и правда заблудиться.")
                    ,down = vw("К складским помещениям", "ware4")
                  }
}

trucker = staticitem {
   dsc          = "Почти всю дорогу здесь перегородил грузовик. В грузовике сидит {водитель} и курит, стряхивая пепел в приоткрытое окно."
  ,act          = walk_("trucker_dlg")
  ,cnd          = not_("bel._truck")
}

trucker_dlg = dialog {
   tile         = { tile "truck", 0, 400 }
  ,dsc          = "Судя по всему, он чего-то ждет."
  ,dlg          = dxml "trucker"
  ,talkend      = "ware5"
}

driveout = pause {
   time         = 3000
  ,next         = walkblack_("ware4", "Грузовик уехал.")
}

lie = cutscene {
   bounds       = { 260, 240, 480 }
  ,dsc          = [[Как ни пыталась Катя удержать водителя, он все же подъехал к офису на своем грузовике, чтобы, как он сказал, 
                    самому во всем разобраться. Вряд ли Кате теперь позволят просто так слоняться вокруг склада. Возвращаться туда 
                    уже не имело смысла.]]
  ,next         = "sys_gameover"
}

------------------------------------------------------------------------------------------
-- Inside Area
------------------------------------------------------------------------------------------

stophere = cutscene {
   bounds       = { 200, 260 }
  ,dsc          = "-- Стой! Кто это? Ты что здесь делаешь? -- крикнул мужчина в грязной спецовке.^Бежать было бессмысленно."
  ,next         = "sys_gameover"
}

inside = scene {
   tile         = { cm_tile "ceil", 0, 20 }
  ,bounds       = { nil, 220 }
  ,enter        = set_checkpoint
  ,obj          = { "inside_containers" }
  ,nav          = {
                    up = vw("Пройти в глубь склада", "inside1")
                  }
}

inside_containers = staticitem {
   dsc          = [[Катя пролезла под воротами и вдруг замерла, прижавшись к каким-то ящикам. Она вдруг подумала, что и сама не понимает, 
                    что делает здесь. Свет здесь совсем тусклый, но можно увидеть, что все помещение склада заставлено какими-то массивными 
                    металлическими {контейнерами}. Вряд ли она сможет узнать здесь что-нибудь об отце, а если ее поймают, то наверняка вызовут 
                    полицию. Но просто вернуться назад и поехать домой она тоже не могла.]]
  ,act          = "Интересно, что в них лежит? Катя никогда раньше такие не видела."
  ,showonce     = true
}

inside1 = scene {
   tile         = tile "cargo1"
  ,dsc          = [[Катя услышала чьи-то голоса и решила на всякий случай спрятаться за ближайшим ящиком.^^]]
  ,obj          = { "inside1_env", "inside1_door" }
  ,nav          = {
                    right = vw("К соседним ящикам", walkif_("bel._pair", "inside2", "qte1"))
                  }
}

inside1_env = staticitem {
   dsc          = choose_ {
                     ["default"] = "Вдалеке, в другом конце помещения, разговаривают два {человека} -- мужчина в грязно-серой робе разнорабочего и женщина в красной повязке."
                    ,["bel._pair"] = "Женщина в красной повязке ушла, и мужчина остался один. Быть может, сейчас получится проскользнуть?"
                  }
  ,act          = "Кажется, они увлечены разговором."
  ,showonce     = true
}

inside1_door = staticitem {
   dsc          = "Рядом с ними можно заметить приоткрытую красную {дверь}."
  ,act          = "Видимо, эта дверь ведет в соседний ангар -- куда сейчас пытается заехать грузовик."
  ,cnd          = not_("bel._pair")
  ,showonce     = true
}

inside1_wait = scene {
   tile         = tile "cargo1"
  ,obj          = { xact("wait", chain_ { set_("bel._pair"), walk_("inside1_pause") }) } 
  ,dsc          = [[Мужчина и женщина в другом конце ангара по-прежнему активно обсуждают что-то. Женщина время от времени утомленно вздыхает и оглядывает
                    контейнеры в ангаре, словно бы ищет что-то. Катя думает, что лучше {wait|подождать}, пока они закончат говорить и разойдутся.]]
  ,nav          = {
                    right = vw("К соседним ящикам", "stophere")
                  }
}

inside1_pause = pause {
   time         = 2000
  ,fading       = 50
  ,next         = "inside1"
}

qte1 = timerroom {
   seconds      = 3
  ,obj          = { xact("left", walk_("inside1_wait")), xact("right", walk_("stophere")) }
  ,dsc          = [[Они вот-вот заметят ее! Можно вернуться к {left|ящику}, за которым Катя только что пряталась, или попробовать добежать до противоположной {right|стены} -- 
                    правда, Катя не уверена, что успеет.]]
  ,next         = "stophere"
}

inside2 = scene {
   tile         = { tile "cargo2", 813, 312 }
  ,dsc          = choose_ {
                     ["default"] = "От волнения каждый удар сердца отдается во всем теле."
                    ,["inside2._seen"] = "Катя со всех сторон окружена странными металлическими контейнерами."
                  }
  ,alwaysdsc    = true
  ,nav          = {
                     up = vw("К ящикам впереди", "inside4")
                    ,down = vw("В конец помещения", "inside3")
                  }
}

inside3 = scene {
   tile         = tile "cargo3"
  ,dsc          = "В этой части ангара тоже все заставлено ящиками."
  ,alwaysdsc    = true
  ,obj          = { "can" }
  ,nav          = {
                    right = vw("Вернуться", "inside2")
                  }
}

can = item {
   nam          = "Пустая банка"
  ,dsc          = "Кто-то бросил здесь пустую {банку} из-под содовой."
  ,tak          = "Катя подобрала пустую банку."
  ,img          = ico "coke-use"
  ,ico          = ico "coke"
  ,use          = chooseuse_ {
                     ["default"] = "В этом нет никакого смысла."
                    ,["inside4_boxes"] = chain_ { drop_("can"), sound_("can"), walk_("drop_bad1") }
                    ,["inside4_wall"] = chain_ { drop_("can"), sound_("can"), walk_("drop_good1") }
                  }
}

inside4 = scene {
   tile         = { tile "cargo4", 837, 383 }
  ,dsc          = "Красная дверь уже совсем недалеко, однако рабочий все еще расхаживает в конце ангара и наверняка заметит Катю, если она попробует подойти к двери."
  ,obj          = { "inside4_boxes", "inside4_wall" }
  ,nav          = {
                     up = vw("К двери", "stophere")
                    ,down = vw("Назад", "inside2")
                  }
}

inside4_boxes = staticitem {
   dsc          = "Неподалеку от того места, где прячется Катя, стоят какие-то картонные {коробки}."
  ,act          = "На коробках ничего не написано. Сложно сказать, что в них лежит."
}

inside4_wall = staticitem {
   dsc          = "Железные ворота позади Кати почти полностью заставлены высокими {контейнерами} -- грузовик в этот ангар уж точно не въедет."
  ,act          = "Если бы рабочий перешел в другую часть склада, то Катя бы могла успеть проскользнуть к двери."
}

drop_bad1 = pause {
   time         = 2000
  ,next         = "drop_bad2"
}

drop_bad2 = cutscene {
   bounds       = { 260, 220, 480 }
  ,dsc          = [[Катя бросила банку к коробкам.^
                    Рабочий услышал шум и быстро зашагал по бетонному полу ангара. Он уже собирался поднять банку, как вдруг...^
                    Видимо, краем глаза мужчина заметил Катю. Бежать было уже поздно.]]
  ,next         = "sys_gameover"
}

drop_good1 = pause {
   time         = 2000
  ,next         = "drop_good2"
}

drop_good2 = cutscene {
   bounds       = { 260, 220, 480 }
  ,dsc          = [[Катя бросила банку к воротам.^
                    Рабочий услышал шум и подошел к стене. Он поднял банку, повертел ее в руках и поставил на контейнер.^
                    Потом он стал осматривать ангар у ворот.]]
  ,next         = "inside4_run"
}

inside4_run = scene {
   tile         = { tile "cargo4", 837, 383 }
  ,dsc          = "У Кати есть буквально несколько секунд. Возможно, сейчас она успеет проскользнуть к двери."
  ,alwaysdsc     = true
  ,nav          = {
                     up = vw("К двери", "inside5")
                    ,down = vw("Назад", "stophere")
                  }
}

inside5 = scene {
   tile         = { tile "door", 751, 140 }
  ,dsc          = [[Дверь открыта. Из соседнего ангара доносятся чьи-то громкие голоса и какой-то резкий оглушающий скрежет.
                    Катя несколько секунд колеблется, прежде чем зайти.]]
  ,nav          = {
                    right = vw("В соседний ангар", "gateopen")
                  }
}

gateopen = pause {
   time         = 6000
  ,enter        = stop_music
  ,next         = "inside6"
}

inside6 = scene {
   tile         = tile "cargo3"
  ,dsc          = [[В конце ангара несколько рабочих пытаются вручную поднять ворота. Мужчина в мокрой спецовке, с которым Катя разговаривала
                    на улице, что-то громко кричит и размахивает руками. Катя вдруг поняла, что сама загнала себя в ловушку -- вернуться назад
                    она не может, ведь там наверняка все еще стоит тот рабочий, а у ворот в этом ангаре, даже если их действительно откроют, собралась
                    целая толпа.^^]]
  ,obj          = { "inside6_wait" }
  ,alwaysdsc    = true
  ,nav          = {
                    left = vw("Перебежать к контейнерам слева", "qte2")
                  }
}

inside6b = scene {
   tile         = tile "cargo3"
  ,dsc          = "Вряд ли стоит возвращаться в тот ангар, через который Катя пробралась сюда. Она ведь даже не знает, остались ли там люди. А здесь точно никого нет."
  ,alwaysdsc    = true
  ,nav          = {
                     left = vw("Перебежать к контейнерам слева", "inside7b")
                    ,down = vw("Вернуться в предыдущий ангар", "stophere")
                  }
}

inside6_wait = staticitem {
   dsc          = [[Видимо, ей не остается ничего другого, как {ждать}, хотя Катю мучит какое-то смутное предчувствие. Позади нее -- открытая дверь, ей
                    даже начинает казаться, что она слышит чьи-то шаги.]]
  ,act          = walk_("inside6_stophere")
}

inside6_containers = staticitem {
   dsc          = [[Слева снова стоят железные контейнеры, как бы образуя полукруг у стены. Катя могла бы спрятаться там, однако рабочие могут ее заметить,
                    пока она будет делать свою перебежку.]]
  ,act          = "Катя думает, что, возможно, она успела бы добежать. Это место кажется ей более безопасным."
  ,showonce     = true
}

inside6_stophere = cutscene {
   bounds       = { 220, 240, 480 }
  ,dsc          = [[Шаги за спиной вовсе не слышались Кате. Спустя минуту кто-то громко окликнул ее, она вздоргнула, вскочила на ноги, но было уже поздно.
                    Рабочие бежали к ней с двух сторон.]]
  ,next         = "sys_gameover"
}

qte2 = timerroom {
   seconds      = 2
  ,obj          = { xact("run", walk_("inside7")) }
  ,dsc          = [[Кажется рабочие у ворот что-то заметили. Нужно {run|торопиться}!]]
  ,next         = "stophere"
}

inside7 = scene {
   tile         = tile "cargo1"
  ,dsc          = "Катя спряталась за контейнерами."
  ,obj          = { "inside7_wait_obj" }
  ,nav          = {
                    right = vw("Вернуться на прежнее место", "stophere")
                  }
}

inside7_wait_obj = staticitem {
   dsc          = "Теперь ей не оставалось ничего другого как {ждать} в надежде, что рабочие скоро закончат возиться с воротами и уйдут."
  ,act          = walk_("inside7_wait")
}

inside7_wait = cutscene {
   bounds       = { 220, 210, 480 }
  ,fading       = 60
  ,dsc          = [[Из другого конца ангара еще долго доносился надсадный скрежет металла -- казалось, что кто-то разрывает на части листы жести.
                    Потом послышалось тарахтение двигателя и скрип резины -- видимо, в ангар заезжал грузовик, -- однако Катя боялась высынуться из
                    своего укрытия и сидела на холодном бетонном полу, прижавшись к металлическим контейнерам. Какое-то время в ангаре еще слышались
                    чьи-то резкие недовольные голоса и грохотание ящиков, но потом все стихло. Катя набралась смелости и выглянула из-за контейнеров.^
                    В ангаре никого не было. Напротив ворот стоял грузовик -- тот самый, водителя которого обманула Катя. Сами ворота были подняты.
                    Путь наружу открыт.]]
  ,next         = "inside7b"
}

inside7b = scene {
   tile         = tile "cargo1"
  ,dsc          = "Нет смысл и дальше прятаться за контейнерами. Лучше поскорее убираться из этих ангаров. Не стоило вообще сюда залезать."
  ,alwaysdsc    = true
  ,nav          = {
                     up = vw("К открытым воротам", "inside8")
                    ,right = vw("Перебежать к стене справа", "inside6b")
                  }
}

inside8 = scene {
   tile         = tile "gate"
  ,bounds       = { 56, 290, 800 }
  ,dsc          = choose_ {
                     ["default"] = 
                          [[Вот и все, ворота открыты, путь свободен. Этот кошмар наконец-то закончился, Катя может просто вернуться домой... Однако ей 
                            не хочется уходить. Она так ничего и не смогла узнать, а ведь ее отец наверняка работал здесь. Только от нее это почему-то
                            скрывают...^Катя обернулась. Перед ней стоял старый грузовик.]]
                    ,["inside8._seen"] =
                          [[А дождь все не кончается. Вода ручейками стекает по мятому забралу сломавшихся ворот. Где-то вдалеке, над черными домами, которые
                            едва можно отличить от грозовых облаков, сверкает молния.]] 
                  }
  ,alwaysdsc    = true
  ,nav          = {
                     up = vw("Выйти на улицу", "final1"):cnd("bel._address", "Лучше все-таки здесь немного осмотреться, прежде чем уходить.")
                    ,down = vw("К грузовику", "inside9")
                  }
}

inside9 = scene {
   tile         = { tile "truck", -100, 266 }
  ,obj          = { "inside9_truck", "inside9_truckwindow" }
  ,nav          = {
                    down = vw("К воротам", "inside8")
                  }
}

inside9_truck = staticitem {
   dsc          = "{Грузовик} почти вплотную прижался к высоким металлическим контейнерам."
  ,act          = choose_ {
                     ["default"] = chain_ { sound_("cardoor"), "Дверь закрыта." }
                    ,["bel._unlock"] = chain_ { sound_("cardoor2"), walkblack_("intruck") }
                  }
}

inside9_truckwindow = staticitem {
   dsc          = "Окно с водительской стороны {открыто}."
  ,act          = chain_ { sound_("cardoor2"), set_("bel._unlock"), walkblack_("intruck", "Катя просунула руку в окно, и открыла водительскую дверь изнутри.") }
  ,disable      = if_("bel._unlock")
}

intruck = scene {
   tile         = { tile "cabin", 0, 20 }
  ,bounds       = { nil, 260 }
  ,dsc          = [[В салоне машины отвратительно пахнет крепким табаком и соляркой. Дермонтин на сиденях прохудился, а весь руль зачем обмотан синей изолентой.]]
  ,alwaysdsc    = true
  ,obj          = { "intruck_kron", "intruck_gps", "intruck_holder" }
  ,nav          = {
                    left = vw("Вылезти из грузовика", chain_ { sound_("cardoor2"), walkblack_("inside9") })
                  }
}

intruck_kron = staticitem {
   dsc          = "На панели, у лобового стекла, торчит маленький пластиковый {кронштейн}."
  ,act          = "Крепится на липучке. На такие обычно вешают навигаторы."
  ,showonce     = true
  ,cnd          = not_("bel._gps")
}

intruck_gps = staticitem {
   dsc          = "На крошнтейне у лобого стекла закреплен {навигатор}."
  ,act          = walk_("gps_start")
  ,cnd          = if_("bel._gps")
}

intruck_holder = staticitem {
   dsc          = "Вся крышка от {бардачка} заклеена какими-то блеклыми, наполовину стершимися наклейками."
  ,act          = choose_ {
                     ["default"] = 
                        chain_ { 
                          set_("bel._gps"), 
                          sound_("items2"),
                          [[В бардачке лежали толстая грязная книга в мягкой обложке -- наверное, какая-нибудь инструкция -- инструменты в дермонтиновом чехле и новый 
                            дорогой навигатор с большим экраном. Катя взяла навигатор и закрепила его на кронштейне.]] 
                        }
                    ,["bel._gps"] = chain_ { sound_("items2"), "Здесь больше нет ничего полезного." }
                  }
}

function gps_base(o)
  o.tile = { tile "gps", 178, 125 };
  o.fading = 0;
  o.x = 260;
  o.y = 165;
  o.w = 440;
  o.alwaysdsc = true;
  o.fps = nvl(o.fps,20);
  o.bounds = nvl(o.bounds,{ o.x+10, o.y+10, o.w-20 });
  return scene(o);
end

function gps_return(o)
  local ondrawbg = o.ondrawbg;
  o.bounds = nvl(o.bounds,{ 270, 220, 420 });
  o.ondrawbg = function(s,p)
    if s.map2 == nil then
      s.map2 = map(0, 0, const.picwidth, const.picheight);
    end
    drawing.draw_text(p, o.title, s.x+10, s.y+10, const.textcolor, const.fontb, 16);
    drawing.draw_mask(p, s.x+10, s.y+30, s.w - 20, 1, const.textcolor);
    s.map2:add("ret", 600, 370, 110, 60);
    drawing.draw_pic(p, tile "close", 600, 370);
    if ondrawbg ~= nil then
      ondrawbg(s,p);
    end
    return p;
  end
  o.ontimer = function(s,x,y)
    local sel = s.map2:get(x, y);
    if sel ~= s._oldret then
      drawing.clean(s.pic, 600, 350, 110, 60);
      s._oldret = nil;
    end
    if sel == "ret" and sel ~= s._oldret then
      s._oldret = sel;
      drawing.copy_pic(s.pic, tile "close_sel", 600, 350);
    end
  end
  o.onclick = function(s,x,y)
    local sel = s.map2:get(x,y);
    if sel == "ret" then
      if is_function(s.back) then
        s:back();
      else
        walk(s.back);
      end
    end
  end
  return gps_base(o);
end

function gps_loading(tit,next,fps)
  return gps_base {
     fps        = nvl(fps,5)
    ,ondrawbg   = function(s,p)
                    drawing.draw_mask(p, s.x+20, s.y+120, s.w-40, 30, const.textcolor, 255);
                    drawing.draw_mask(p, s.x+21, s.y+121, s.w-42, 28, "black", 255);
                    drawing.draw_text_center(p, tit, const.picwidth, s.y+95, const.textcolor, const.fontb, 14)
                    return p;
                  end
    ,ontimer    = function(s,x,y)
                    if s._prog == nil then
                      s._prog = 0;
                    end
                    if s._prog == 100 then
                      s._prog = nil;
                      if is_function(next) then
                        next();
                      else
                        walk(next);
                      end
                      return;
                    end
                    s._prog = s._prog+1;
                    local w = s._prog * 4;
                    drawing.copy_mask(s.pic, s.x+21, s.y+101, w, 28, const.textcolor, 255);
                  end
  }
end

gps_start = gps_loading("Загрузка...", chain_{ sound_("gps"), walk_("gps_menu")})

gps_new1 = gps_loading("Определение местоположения...", "gps_new2", 20);

gps_new2 = gps_return {
   title        = "Программирование нового маршрута"
  ,dsc          = "Ошибка! Невозможно определить местоположения. Нет сигнала со спутника ВНС."
  ,back         = "gps_menu"
}

gps_search1 = gps_loading("Определение местоположения...", "gps_search2", 20);

gps_search2 = gps_return {
   title        = "Поиск"
  ,dsc          = "Ошибка! Невозможно определить местоположения. Нет сигнала со спутника ВНС."
  ,back         = "gps_menu"
}

gps_fav1 = gps_loading("Поиск сохраненных маршрутов...", "gps_fav2", 40);

gps_fav2 = gps_return {
   title        = "Сохраненные маршруты"
  ,enter        = set_("bel._address")
  ,obj          = { xact("new", walk_("gps_new1")) }
  ,dsc          = [[{new|ул. Озерная, д. 24}]]
  ,back         = "gps_menu"
}

gps_history1 = gps_loading("Открытие истории поездок...", "gps_history2", 40);

gps_history2 = gps_return {
   title        = "История поездок"
  ,enter        = set_("bel._address")
  ,dsc          = [[10 июня 2007 г.^
                    От: ул. Озерная, д. 24^
                    До: ул. Соловьева, д. 33^
                    Время отбытия: 19-32^
                    Время в пути: 0 ч. 56 м.^^
                    
                    10 июня 2007 г.^
                    От: ул. Соловьева, д.33^
                    До: ул. Озерная, д.24^
                    Время отбытия: 14 ч. 04 м.^
                    Время в пути: 1 ч. 26 м.
                  ]]
  ,back         = "gps_menu"
}

gps_menu = gps_return {
   title        = "Навигатор ВНС. Версия 12.03"
  ,obj          = { xact("new", walk_("gps_new1")), xact("search",walk_("gps_search1")), xact("fav", walk_("gps_fav1")), xact("history", walk_("gps_history1")) }
  ,dsc          = [[{new|Задать новый маршрут}^
                    {fav|Сохраненные маршруты}^
                    {search|Поиск по маршруту}^
                    {history|История поездок}^^
                    Внимание! В навигатор загружена нестандартная карта, не прошедшая сертификацию ГПО ВНС. Произведите обновление
                    и установите сертифицированную карту.
                  ]]
  ,back         = walkblack_("intruck", "Катя отключила навигатор.")
}


------------------------------------------------------------------------------------------
-- Intro Area
------------------------------------------------------------------------------------------

final1 = scene {
   tile         = tile "ware2"
  ,dsc          = [[Катя вышла на улицу и торопливо зашагала по улице прочь от складов, навстречу ветру и дождю.]]
  ,nav          = {
                    up = vw("Вверх по улице", "final2")
                  }
}

final2 = scene {
   tile         = tile "street_wall2"
  ,bounds       = { 130, nil, 700 }
  ,dsc          = [[Катя чувствовала себя измотанной. Она так ничего и не смогла узнать, лишь потеряла время зря.
                    Однако название улицы из навигатора, Озерная, не давало ей покоя. Катя была уверена,
                    что уже слышала его раньше. К тому же рабочий у склада упоминал о некой группе, где наверняка работал ее отец, 
                    и которая могла ездить как раз на эту Озерную.]]
  ,nav          = {
                    up = vw("Вверх по улице", "final3")
                  }
}

final3 = scene {
   tile         = tile "street_wall1"
  ,bounds       = { 220, nil, 620 }
  ,obj          = { "final3_cab", "final3_driver" }
}

final3_cab = staticitem {
   dsc          = "Когда Катя уже вышла из проулка, она видела желтое {такси}, припаркованное на обочине."
  ,act          = "Нечасто в этих районах можно увидеть такси. Видно, шофер довез кого-то и сейчас как раз собирается уезжать."
  ,showonce     = true
}

final3_driver = staticitem {
   dsc          = "{Водитель} нажимал поправлял прилепленный к стеклу навигатор, который никак не хотел вставать в пазы кронштейна."
  ,act          = [[Дождь все еще идет. Катя вся промолка. И так устала. А в такси удобно и тепло... Денег у нее, конечно, совсем немного, 
                    но ведь отсюда не так далеко до ее дома?^
                    Катя едва сдерживает, чтобы не подойти к таксисту и {cabman_dlg_obj|спросить}, свободен ли он.]]
}

cabman_dlg_obj = staticitem {
  act           = walk_("cabman_dlg1")
}

cabman_dlg1 = dialog {
   bounds       = { 260, 220, 480 }
  ,dsc          = "Таксист наконец оставил в покое свой навигатор, посмотрел на Катю и стал опускать ветровое стекло."
  ,dlg          = dxml "cabman1"
}

final4 = cutscene {
   bounds       = { 260, 240, 480 }
  ,dsc          = [[Катя практически машинально произнесла адрес из навигатора. Она даже не сразу поняла свою ошибку, захотела исправиться, 
                    однако что-то остановило ее, и она просто села в такси.]]
  ,next         = "final5"
}

final5 = pause {
   time         = 2000
  ,next         = "cabman_dlg2"
}

cabman_dlg2 = dialog {
   tile         = tile "car"
  ,dsc          = [[В такси действительно было тепло и уютно. Катя откинулась на спинку кресла и закрыла глаза. Она почувствовала, что начинает
                    засыпать. Ее потревожил голос шофера.^^
                    -- Да... Ну и погодка сегодня? Прям ураган.]]
  ,dlg          = dxml "cabman2"
}

final6 = pause {
   time         = 2000
  ,fading       = 0
  ,next         = "final7"
}

final7 = pause {
   time         = 4000
  ,fading       = 0
  ,ondrawbg     = function(s,p)
                    drawing.draw_text_center(p, "Ты что, сдурела? Это же в старом городе!", const.picwidth, 260, const.textcolor, const.fontb, 26);
                    return p;
                  end
  ,next         = "main"
}